package com.group01.utils;


import javax.servlet.http.HttpServletRequest;
import java.util.Map;
import java.util.UUID;

/**
 * @Description 通用工具类
 * @Author 翟玉龙
 * @Date 2024/6/21
 */
public class CommonUtils {

    /**
     * 从ThreadLocal中获取id信息
     * @return id
     */
    public static Integer getLocalId() {
        Map<String , Object> map = ThreadLocalUtil.get();
        if(map.get("id") == null) {
            CommonException();
        }
        return (Integer) map.get("id");
    }
    /**
     * 从ThreadLocal中获取用户名称
     * @return username
     */
    public static String getLocalName() {
        Map<String , Object> map = ThreadLocalUtil.get();
        if(map.get("username") == null) {
            CommonException();
        }
        return (String) map.get("username");
    }

    /**
     * 从ThreadLocal中获取角色id
     * @return roleId
     */
    public static Integer getLocalRoleId() {
        Map<String, Object> map = ThreadLocalUtil.get();
        if (map.get("roleId") == null) {
            CommonException();
        }
        return (Integer) map.get("roleId");
    }

    /**
     * 获取详细请求地址
     */
    public static String getRequestUrl(HttpServletRequest request) {
        // 获取请求URL
        String scheme = request.getScheme(); // 获取协议（http或https）
        String serverName = request.getServerName(); // 获取服务器名称（localhost）
        int serverPort = request.getServerPort(); // 获取服务器端口（8080）
        String requestURI = request.getRequestURI(); // 获取请求URI（/book/getBooksByCategoryId/6）
        return scheme + "://" + serverName + ":" + serverPort + requestURI; // 拼接完整的请求路径
    }

    /**
     * 抛出异常
     */
    public static void CommonException() {
        RuntimeException e = new RuntimeException("当前没有用户登录!");
        LogUtil.error("获取token失败,{当前用户未登录}", e);
        throw e;
    }

    /**
     * 获取UUID
     */
    public static String getUUID() {
        return UUID.randomUUID().toString().replace("-", "");
    }
}